package gold.gold04;

import java.util.HashMap;
import java.util.Map;

/**
 * 其他方法比较麻烦, 不想看。
 */
public class S1602单词频率 {

}
class WordsFrequency {
    /**
     * 26, 直接HashMap?因为有好多个get操作, 所以先把map创建好比较合适。
     * 就是map的频繁读写不知道怎么能减少操作量?然后map.get是否为空?
     */
    private Map<String, Integer> map;

    public WordsFrequency(String[] book) {
        this.map = new HashMap<String, Integer>();
        for(String s: book){
            Object temp1 = map.get(s);
            map.put(s, temp1 == null? 1: (Integer)temp1 + 1);
        }
    }

    public int get(String word) {
        Object temp1 = map.get(word);
        return temp1 == null? 0: (Integer)temp1;
    }

    /**
     * 35, 使用map.getOrDefault(), 其实一样。
     * 注意, 创建HashMap的时候, 填进去2<<16, 给他提前扩容是自作聪明。
     */
    private Map<String, Integer> map2 = new HashMap<>();
    public void WordsFrequency2(String[] book) {
        for(String s: book){
            map.put(s, map.getOrDefault(s, 0) + 1);
        }
    }
    public int get2(String word) {
        return map.getOrDefault(word, 0);
    }
}